吧友@yc10k 提到如何实现围棋算法间的对弈和比较呢?

我以前使用的是笨办法,就是将两个软件打开,一个电脑执黑人执白,一个电脑执白人执黑,然后跟局两个软件的走步,来回在摆子即可。

现在介绍一种能够让电脑间自动实验对弈的方法。

首先算法必须支持GTP,即Go Text Protocol, 是一种用文本方式与计算机围棋算法交流的协议。是GMP(Go Modem Protocol)协议的改进版。 由于其简单方便易读,现在很多围棋算法都遵循此协议。

其次需要有能够连接两个算法的平台,这里主要介绍GoGui。这是一款开源软件,本身只提供围棋对弈的界面,不自带围棋算法。如果想要实现人机对弈,需要连接相应的围棋算法即可。唯一不方便之处就是,有些算法是可以调节难度的,在GoGui中无法直接通过界面调节,需要通过算法传参。但只要通过了解,也可以很快掌握。

附件中包含了Windows版的GoGui,以及一些常见的围棋算法。

AmiGo 是最早的围棋开源算法。最早是1983年Stoney Ballard使用Pascal程序所写,后于1989年Todd R. Johnson改写为C语言。相对于新近的软件算法,Amigo的棋力是比较弱的(个人感觉18k+)。

Pachi 目前版本10.00,发布于2012年8月12日。棋力水平跟机子配置有关,在9×9棋盘棋力可达7D,在19×19大约1K。但在KGS上使用较为强力的计算机,棋力可达2D。如果使用计算机阵列(64台电脑,每台20核CPU),可达4D,甚至曾被让6子赢周俊勋九段。

GNU Go 从其名称GNU就可看出,是一款开源的围棋算法。最新版本是2009年2月发布的3.8版本。目前GNU Go活跃KGS平台,水平从25k到10k不等。

此处提供版本均为Windows版,如需Mac或Linux可通过搜索到其官方网站下载。

附件(文中所用软件):
gogui-1.4.7-install.exe
pachi-10.00-win32.7z
amigo.rar
gnugo-3.8.rar

如果希望人机对战,可以选择Program->New Program,打开如上图界面。

单击Command后面的按钮,选择对应的围棋算法。

这里我选择amigogtp算法,直接点确定,这时算法就会记录到程序中。

在次通过Program->Attach->AmiGo,选择相应的程序。

通过Game->Computer Color 可以选择电脑的黑白,就可以和电脑进行对弈了。

如果只要设置一个围棋算法自身之间的对弈比较简单,只需要在Game->Computer Color->Both 选上后,程序会自动进行对弈。

但如果要让两个算法间进行对弈,这个就比较麻烦了。首先,这里就要使用到gogui-twogtp模块。而且只能通过命令行进行调用。

首先点开windows的开始菜单,在下图的框中输入CMD,回车,即可打开命令行窗口。

打开后应该是下图的模样,然后进入GoGui的安装目录,我这里是D:\Program Files (x86)\GoGui 这时就可以尽情使用GoGui提供的各项功能。

这里直接上个例子,黑棋是默认棋力的GNU GO,而白棋是棋力最高的GNU GO。调用gogui-twogtp,首先设置黑棋和白棋,其次-games是设置对局次数, -size 是设置棋盘大小, -alternate 是轮流执黑, -sgffile 对局存于文件, -auto 每局结束后自动继续。

1
2
3
4
BLACK="gnugo --mode gtp"
WHITE="gnugo --mode gtp --level 5"
gogui-twogtp -black "$BLACK" -white "$WHITE" -games 100 \
-size 9 -alternate -sgffile gnugo5 -auto

(此段代码为Linux或Mac下可用,Windows下的命令见后面)

但这个方法是无法实时观测到对弈进程的,只能通过存储的文件来查看。但优点是速度快。

下例是通过界面显示程序实时进程,同时还可通过Tool->Analyze在运行中调整参数。缺点就是运行较慢。

1
2
3
BLACK="gnugo --mode gtp"
WHITE="gnugo --mode gtp --level 5"
gogui -program "gogui-twogtp -black \"$BLACK\" -white \"$WHITE\""

(此段代码为Linux或Mac下可用,Windows下的命令见后面)

上面两段例子适合作为参考,由于Windows使用的是Dos命令行,所以其命令又有所不同。
下面是一例,利用界面显示电脑对弈过程,黑棋是Amigo,白棋是Pachi。输入完命令,回车后,就会打开GoGui并对弈。

1
D:\Program Files (x86)\GoGui>gogui -program "gogui-twogtp.exe -black \"amigo\amigogtp.exe\" -white \"pachi\pachi.exe\"" -computer-both

~完~

如有问题,欢迎指正。